package com.ynet.middleground.user.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.BaseReqObjPager;
import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.user.bean.AddChannelResourceReq;
import com.ynet.middleground.user.bean.QueryChannelResourceReq;
import com.ynet.middleground.user.dto.ChannelResourcesDTO;

/**
 * @author liulx
 * @description 渠道资源配置管理服务
 * @date 2020-07-07 17:40
 */
public interface ChannelResourceService {

    /**
     * 新增跨渠道资源配置，支持批量
     * 
     * @param req 新增跨渠道资源配置请求参数
     * @return 结果以 success 字段为准, true 为成功， false 为失败
     */
    ServiceResult<Object> saveOrUpdate(@Valid AddChannelResourceReq req);

    /**
     * 根据原渠道号和模板渠道号查询跨渠道资源信息
     *
     * @param req 查询跨渠道资源配置详情请求参数
     * @return 跨渠道资源配置传输对象
     */
    ServiceResult<ChannelResourcesDTO> getDetail(@Valid QueryChannelResourceReq req);

    /**
     * 根据原渠道号和模板渠道号删除两者之间跨渠道所有资源信息
     * 
     * @param req 查询跨渠道资源配置详情请求参数
     * @return 结果以 success 字段为准, true 为删除成功， false 为删除失败
     */
    ServiceResult<Object> delete(@Valid QueryChannelResourceReq req);

    /**
     * 分页查询跨渠道信息
     *
     * @param req 基础参数分页
     * @return 跨渠道资源配置列表
     */
    ServiceResult<List<ChannelResourcesDTO>> listPage(@Valid BaseReqObjPager req);

    /**
     * 同步跨渠道资源信息至 redis
     * 
     * @return 结果以 success 字段为准, true 为执行成功， false 为执行失败
     */
    ServiceResult<Object> doSyncChannelResourceToRedis();

}
